1. Field of the Invention
The present invention relates to a flash memory controller. More particularly, the present invention relates to a flash memory controller for averagely using blocks of a flash memory and the method thereof.
2. Descriptions of the Related Art
Portable memories are widely applied in many applications. However, there are several natural properties that limit fields of application. Taking flash memory as an example, the basic access unit is denoted as block, and a block with data (denoted as written block) cannot directly be over-written new data but needs to be erased first. In other words, only empty/erased block can be written. If the previous written block with first logical address is going to be written with new data, the coming new data is written to a spare block, and the spare block with the new data is reassigned with the first logical address. Then the previous written block is erased to be a spare block. The aforementioned operation is denoted as “hot-zone change”, in which hot-zone means a number of blocks that are going to be changed at a time, and the hot-zone of written blocks going to be re-written and the hot-zone of spare blocks going to receive new data are equal.
Also, each block of a flash memory has limitation of erase times. For example, one block may be erased for ten thousands times, then the block is unavailable for further erasing and writing new data into, i.e. the block is now failed. When the flash memory starts to have failed block, it may only be read or it may just malfunction, regardless whether it has any other good blocks. Generally, the erase limitation times of single-level-cell flash memory is one hundred thousand erase times, and that of multi-level-cell flash memory is only ten thousand erase times.
Conventional flash memory comprises a various number of blocks, such as 1024 blocks, 2048 blocks, and etc. Prior art of managing the blocks renders all blocks of the flash memory into several management units that averagely have the blocks. Each management unit has two kinds of regions, one is data region, and the other is spare regions. Data region is configured to correspond to logic addresses assigned by a host, and the logic address may be assigned in CHS mode or LBA mode. Spare region is configured to provide spare blocks for replacing the written block in the data regions when new data are going to be written into the flash memory. Since the management unit has the spare region, it can be understood that capacity of each management unit is larger than the capacity of the logic addresses that management unit corresponds to.
It is easy to understand that when the host frequently and extremely access some particular logic addresses, the blocks corresponding to the particular logic addresses and the spare blocks being provided for replacing would have extremely increasing times of erasion. It results in non-uniform times of erasion of the blocks.
Therefore, the memory industry needs a way to manage the use of data blocks and spare blocks to achieve averagely use of blocks. The industry also needs a solution that can manage the data blocks and the spare blocks low-costly.